Method and Apparatus for Repositioning a Horizontally or Vertically Maximized Display Window

ABSTRACT

A method, apparatus, and computer usable program to reposition a display window that has been adjusted along a dimension. The method includes displaying a display window on a desktop, the display window having a first boundary, a second boundary opposite the first boundary, a third boundary about perpendicular to the first boundary, and a fourth boundary opposite the third boundary. The method further includes receiving a resize command and, responsive to receiving the resize command, moving the first boundary with respect to a first window limit and moving the second boundary with respect to a second window limit. The method includes receiving a reposition command and, responsive to receiving the reposition command, moving the third and fourth boundaries of the resized display window while maintaining the fixed distance between the third and fourth boundaries and maintaining the position of the first and second boundaries with respect to the first and second window limits.

This application is a continuation-in-part of U.S. patent applicationSer. No. 11/428,193 filed on Jun. 30, 2006.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to an improved data processingsystem. More specifically, the present invention provides a computerimplemented method, apparatus, and computer usable program product toadjust window heights or widths on displays for data processing systems.

2. Description of the Related Art

Developers of computers in the late 1970s and early 1980s created adesktop metaphor for interacting with data processing systems. Thedesktop metaphor allows a user to view one or more windows within whicha user interacts with a program. Behind the one or more windows is a“desktop” that can show a picture or some other background, along with anumber of icons representing shortcuts to executable files or otherfiles.

Over time, quality of displays used to display desktop windowsincreased. A chief metric of the quality of a display is the number ofpicture elements, or pixels, the display can show. A high number ofpixels allow a display to show more detail along each dimension of adisplayed virtual object. A dimension is the length of a virtual objectin a particular direction. At a time when displays having 640 pixelwidth by 480 pixel height were state of the art, many user interfacedevelopers began designing data processing systems to display multipleprogram outputs. For each user interface program that a developerenvisioned to operate simultaneously, the developer assigned the dataprocessing system the task of showing a display window.

A display window can be characterized as a panel within a display orvideo memory. The panel is often rectangular, though the panel can haveany shape. Within the panel is displayed the output of a program ordata. Output includes text written by a user, data output by a program,a program's user interface, a data file name, or any other output of aprogram or data processing system hardware.

Rectangular display windows, the most common type of display window,have two boundaries that are generally parallel to each other. Inaddition, rectangular display windows have two other boundaries that areabout perpendicular to the first two boundaries. Boundaries are aboutperpendicular even though a rounded corner may join each boundary. Theterm about perpendicular means that two boundaries intersect at an anglewithin a few degrees of 90 degrees.

A program for controlling a display window provides many ways for a userto adjust the size and placement of the display window within thedisplay. For most of the era that desktop metaphor data processingsystems have been popular, the maximum size of a display has been under1,000 pixels on a side. Under such circumstances, developers realizedthat displays were inadequate to display more than a fraction of a filethat a user desired to see. Consequently, developers provided a quickmechanism to enlarge a display window to occupy most, if not all, of thevisible screen. At the time, developers created a maximize button, whichis usually displayed in the upper right hand corner of the displaywindow. A user that clicks on a maximize button triggers the dataprocessing system to enlarge a display window to cover substantially theentire visible display.

As time progressed display technology advanced such that displays couldshow over 1,000 pixels on a side. Unfortunately, in the case of manysettings of word processing programs, a fully enlarged display windoweither leaves significant fractions of the display window blank, orcrowds out other display windows that benefit the user. Display areastend to be better utilized if a word processing program displays adisplay window that is relatively tall and narrow in the height andwidth dimensions, respectively. In this context, “tall” means a displaywindow that extends about to the top and bottom of the screen from theperspective of the user. In this context, “narrow” means the windowwidth is either not as large as the window height dimension, or thewindow width does not extend to about each side of a display from theperspective of the user.

However, users must resort to the manual use of a mouse to size andposition a display window that is tall and narrow, as described above. Auser can feel compelled to leave desktop space available for additionaldisplay windows, but at the cost of exerting these additional movementsand clicks. As a result, users are frustrated by the need to makeadjustments extending a display window to a desired size quickly andefficiently.

Consequently, users would be less frustrated if users could rapidlystretch a display window along a single dimension. In addition, userswould be less frustrated if users could restore display windows back toan original size or to a former size.

SUMMARY OF THE INVENTION

Illustrative embodiments described herein provide for a method,apparatus, and computer usable program to adjust a display window alonga dimension. The method includes displaying a display window on adesktop, the display window having a first boundary, a second boundaryopposite the first boundary, a third boundary about perpendicular to thefirst boundary, and a fourth boundary opposite the third boundary. Themethod further includes receiving a resize command to resize the displaywindow. In response to receiving the resize command, the method includesmoving the first boundary with respect to a first window limit andmoving the second boundary with respect to a second window limit. Thedistance between the third boundary and the fourth boundary remainsfixed. Furthermore, with the first and second boundaries having beenmoved with respect to the first and second window limits, the method mayinclude receiving a reposition command to reposition the third andfourth boundaries of the display window while maintaining the fixeddistance between the third and fourth boundaries and maintaining theposition of the first and second boundaries with respect to the firstand second window limits.

BRIEF DESCRIPTION OF THE DRAWINGS

The novel features believed characteristic of the invention are setforth in the appended claims. The invention itself, however, as well asa preferred mode of use, further objectives and advantages thereof, willbest be understood by reference to the following detailed description ofan illustrative embodiment when read in conjunction with theaccompanying drawings, wherein:

FIG. 1 is diagram of a data processing system in which embodiments onthe invention may be implemented.

FIG. 2 is a block diagram of a data processing system in which aspectsof the illustrative embodiments may be implemented.

FIG. 3 is a diagram of a display showing a prior art display window.

FIG. 4A is a diagram of a display with the lower display edge forming awindow limit.

FIG. 4B is a diagram of a display with an anchored screen element, suchas a tool bar, forming a window limit.

FIG. 5 is a diagram of a display desktop having a display window with awidth maximize sizing button and a height maximize sizing button.

FIG. 6 is a diagram of a display desktop having a display window thathas been height maximized.

FIG. 7 is a diagram of a display desktop having a display window thathas been width maximized.

FIG. 8 is a diagram of a display desktop having a height maximizeddisplay window illustrating movement of the side rails of the displaywindow.

FIG. 9 is a diagram of a display desktop having a width maximizeddisplay window illustrating movement of the top and bottom rails of thedisplay window.

FIGS. 10A and 10B provide a flowchart of steps executed on a dataprocessing system in accordance with an illustrative embodiment.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 shows a pictorial representation of a data processing system inwhich the aspects illustrative embodiments may be implemented. Acomputer 100 is depicted which includes system unit 102, video displayterminal 104, keyboard 106, storage devices 108, which may includefloppy drives and other types of permanent and removable storage media,and mouse 110. Additional input devices may be included with personalcomputer 100, such as, for example, a joystick, touchpad, touch screen,trackball, microphone, and the like. Computer 100 can be implementedusing any suitable computer, such as an IBM eServer® computer orIntelliStation® computer, which are products of International BusinessMachines Corporation®, located in Armonk, N.Y. Although the depictedrepresentation shows a computer, other illustrative embodiments may beimplemented in other types of data processing systems, such as a networkcomputer. Computer 100 also preferably includes a graphical userinterface (GUI) that may be implemented by means of a program residingin computer readable media in operation within computer 100. Thegraphical user interface may implement a desktop metaphor.

FIG. 2 shows a block diagram of a data processing system in whichaspects of the illustrative embodiments may be implemented. Dataprocessing system 200 is an example of a computer, such as computer 100in FIG. 1, in which code or instructions implementing the processes ofillustrative embodiments may be located. In the depicted example, dataprocessing system 200 employs a hub architecture including a northbridge and memory controller hub (MCH) 202 and a south bridge andinput/output (I/O) controller hub (ICH) 204. Processor 206, main memory208, and graphics processor 210 are connected to north bridge and memorycontroller hub 202. Graphics processor 210 may be connected to the MCHthrough an accelerated graphics port (AGP), for example.

In the depicted example, local area network (LAN) adapter 212 connectsto south bridge and I/O controller hub 204 and audio adapter 216,keyboard and mouse adapter 220, modem 222, read only memory (ROM) 224,hard disk drive (HDD) 226, CD-ROM drive 230, universal serial bus (USB)ports and other communications ports 232, and PCI/PCIe devices 234connect to south bridge and I/O controller hub 204 through bus 238 andbus 240. PCI/PCIe devices may include, for example, Ethernet adapters,add-in cards, and PC cards for notebook computers. PCI uses a card buscontroller, while PCIe does not. ROM 224 may be, for example, a flashbinary input/output system (BIOS). Hard disk drive 226 and CD-ROM drive230 may use, for example, an integrated drive electronics (IDE) orserial advanced technology attachment (SATA) interface. A super I/O(SIO) device 236 may be connected to south bridge and I/O controller hub204.

An operating system runs on processor 206 and coordinates and providescontrol of various components within data processing system 200 in FIG.2. The operating system may be a commercially available operating systemsuch as Microsoft® Windows® XP. Microsoft and Windows are trademarks ofMicrosoft Corporation in the United States, other countries, or both. Anobject oriented programming system, such as the Java™ programmingsystem, may run in conjunction with the operating system and providescalls to the operating system from Java programs or applicationsexecuting on data processing system 200. Java is a trademark of SunMicrosystems®, Inc. in the United States, other countries, or both.

Instructions for the operating system, the object-oriented programmingsystem, and applications or programs are located on storage devices,such as hard disk drive 226, and may be loaded into main memory 208 forexecution by processor 206. The processes of the illustrativeembodiments are performed by processor 206 using computer implementedinstructions, which may be located in a memory such as, for example,main memory 208, read only memory 224, or in one or more peripheraldevices.

Those of ordinary skill in the art will appreciate that the hardware inFIGS. 1-2 may vary depending on the implementation. Other internalhardware or peripheral devices, such as flash memory, equivalentnon-volatile memory, or optical disk drives and the like, may be used inaddition to or in place of the hardware depicted in FIGS. 1-2. Also, theprocesses of the illustrative embodiments may be applied to amultiprocessor data processing system.

In some illustrative examples, data processing system 200 may be apersonal digital assistant (PDA), which is configured with flash memoryto provide non-volatile memory for storing operating system files and/oruser-generated data. A bus system may be comprised of one or more buses,such as a system bus, an I/O bus and a PCI bus. Of course, the bussystem may be implemented using any type of communications fabric orarchitecture that provides for a transfer of data between differentcomponents or devices attached to the fabric or architecture. Acommunications unit may include one or more devices used to transmit andreceive data, such as a modem or a network adapter. A memory may be, forexample, main memory 208 or a cache such as found in north bridge andmemory controller hub 202. A processing unit may include one or moreprocessors or CPUs. The depicted examples in FIGS. 1-2 andabove-described examples are not meant to imply architecturallimitations. For example, data processing system 200 also may be atablet computer, laptop computer, or telephone device in addition totaking the form of a PDA.

Illustrative embodiments described herein provide for a method,apparatus, and computer usable program to adjust a display window alonga dimension. The method includes displaying a display window on adesktop, the display window having a first boundary, a second boundaryopposite the first boundary, a third boundary about perpendicular to thefirst boundary, and a fourth boundary opposite the third boundary. Themethod further includes receiving a resize command to resize the displaywindow. Finally, the method includes, responsive to receiving the resizecommand, moving the first boundary with respect to a first window limitand moving the second boundary with respect to a second window limit.The distance between the third boundary and the fourth boundary remainsfixed.

FIG. 3 is a diagram of a prior art display window. A display window is apanel displayed on a display, such as a monitor. A data processingsystem controls how the panel is displayed. The data processing systemalso controls what is displayed within the display window. Thus, forexample, a data processing system displays prior art display window 301on display 300. Display window 301 occupies a portion of the display300. In addition, display 300 frequently shows taskbar 303. Taskbar 303provides icons that permit a user to trigger the data processing systemto display a window related to the icon by clicking on the icon. Forexample, an icon on a taskbar can be a shortcut to a data file or anexecutable file.

Display 300 has four display edges. The display edges include topdisplay edge 304, right display edge 305, bottom display edge 306, andleft display edge 307. The terms “top”, “bottom,” “right,” and “left,”are relative to a user looking at the display while the computer is innormal operation. A display edge is a linear extent of a display windowalong an outermost line of pixels defining a display window boundary.

Within the display edges, display window 301 shows some content ofinterest to the user. For example, display window 301 displays contentand user controls for a word processing program. Included in the displaywindow is file display area 311, which contains user entered text.

Additionally, display window 301 contains maximize button 321. A usermay click on maximize button 321 to maximize display window 301 to coverthe entire display 300. Thus, a data processing system reacts to mouseclicks within maximize button 321 by expanding window 301 to coverdisplay 300.

FIG. 4A is a diagram of a display window and directions of expansion ofthe display window in accordance with an illustrative embodiment. A dataprocessing system can show display window 401 on display 400 using, forexample, graphics processor 210 of FIG. 2. Display window 401 is shownwithin display 400. Display 400 has upper display edge 415 and lowerdisplay edge 419. Display window 401 has perpendicular boundary 405 andcorresponding first boundary 406. Perpendicular boundary 405 isperpendicular with respect to first boundary 406. A window limit is theoutermost edge of a display window within a display, when the displaywindow is fully enlarged. For example, lower display edge 419 is awindow limit. Alternatively, the window limit can be adjacent to ananchored screen element edge. An anchored screen element is arectangular region of a display that abuts a display edge or abutsanother anchored screen element.

The term “fully enlarged” is relative to the boundaries of the display,relative to anchored screen elements, or to both one or more boundariesof the display and one or more anchored screen elements. Thus, if adisplay window is fully enlarged, then the display window extends from adisplay boundary to a corresponding opposite display boundary, from ananchored screen element to a corresponding opposite anchored screenelement, or from a display window to a corresponding opposite anchoredscreen element.

An operating system or other programs can show supplemental informationin addition to display windows. One zone where such supplementalinformation is shown is an anchored screen element. An anchored screenelement is, for example, taskbar 420, which corresponds to taskbar 303in FIG. 3. A taskbar is a region of a display reserved for displayingpredetermined information or icons, such as icons representing someactive programs. A taskbar can also display icons which, if a user clickon or activates the icon, can be used to execute an executable file orto access a data file. The taskbar is generally rectangular anddisplayed near the bottom of the display, but the taskbar can havedifferent shapes and can be located on different portions of thedisplay.

Users frequently resize display windows, possibly even the taskbar,using a resize command. A resize command is a signal received on a dataprocessing system that operates as a trigger leading to further action.Further action includes modifying parallel boundaries of a displaywindow along a dimension, while maintaining the distance between otherboundaries.

For example, when a program that controls display window 401 receives aresize command, the program moves first boundary 406 along dimension409. Dimension 409 can be referred to as the height of display window401. The program may move first boundary 406 to lower display edge 419.In addition, the data processing system moves second boundary 408.Second boundary 408 is parallel to first boundary 406. The dataprocessing system moves second boundary 408 in a direction opposite tothe direction that the data processing system moves first boundary 406.However, in this illustrative example, the distance between boundary407A and boundary 407B remains fixed even as the distance betweenboundary 408 and boundary 409 changes.

Further information may be displayed beyond display window 401 andtaskbar 420. For example, display 400 includes region 449. Region 449can be characterized as a group of unoccupied pixels. An unoccupiedpixel is a pixel that is not among a collective group of pixels assignedto display a particular display window's content. The word ‘unoccupied’modifies the word ‘pixel’ in relation to a display window. Thus, a‘display window unoccupied pixel’ describes a pixel that is unoccupiedby the collective group of pixels assigned to the display window.Similarly, ‘taskbar unoccupied pixels’ describe pixels that areunoccupied by the collective group of pixels assigned to the taskbar.Thus, region 449 is both window unoccupied pixels and taskbar unoccupiedpixels.

Display window 401 is adjacent to at least one first line of displaywindow unoccupied pixels. The term “display window unoccupied pixels”refers to those pixels on a display that are not occupied by displaywindow 401. For example, to the left of display window 401 alongperpendicular boundary 405 is a vertical line of display windowunoccupied pixels. Following resizing of display window 401 along aheight dimension, perpendicular boundary 405 will continue to remainadjacent to a line of display window unoccupied pixels.

FIG. 4B is another diagram of a display window and directions ofexpansion of the display window in accordance with an illustrativeembodiment. Display window 451 may be displayed by a data processingsystem on display 450 using, for example, graphics processor 210 of FIG.2.

Unlike display 400 of FIG. 4A, display 450 operates differently. Display450 has upper display edge 465 and lower display edge 467, whichcorrespond to upper display edge 415 and lower display edge 419 in FIG.4A. Display window 451 has boundary 455, which corresponds to boundary406 in FIG. 4A. When a program receives a resize command, the programextends boundary 455 along a height dimension 459. However, the programonly extends boundary 455 to anchored screen element edge 461. Anchoredscreen element edge 461 forms a window limit.

Thus, illustrative embodiments provide a computer implemented method,apparatus, and computer usable program to adjust a display window alonga dimension. Adjusting along one dimension permits a user to leavetracts of space open on a desktop for programs other than that programcontrolling the display window. A user can obtain these advantages withone mouse click or with a keystroke combination.

FIG. 5 is a diagram of a display desktop in accordance with anillustrative embodiment. Desktop 526 may be displayed onto display 500,using, for example, graphics processor 210 of FIG. 2 of a dataprocessing system. Display 500 has upper display edge 504, right displayedge 505, left display edge 507, and lower display edge 506. Lowerdisplay edge 506 is a window limit. Taskbar 503 abuts lower display edge506.

Display 500 can show display window 501 as directed by a programexecuting on a data processing system. Display window 501 is not fullyenlarged along any dimension. Display window 501 shows one or moresizing buttons, such as width maximize sizing button 521 and heightmaximize sizing button 525. If a user operates a mouse to click on asizing button, the user has entered a resize command.

For example, a program detects a mouse click on width maximize sizingbutton 521 and responds by causing display window 501 to maximize alongthe selected dimension. In the case of width maximize sizing button 521,the selected dimension is width. However, in this illustrative example,the height of display window 501 remains fixed.

In another example, height maximize button 525 is a sizing button thatalso operates as a target for mouse clicks. A program detects a mouseclick on height maximize button 525 and responds to maximize displaywindow 501 along the selected dimension. In the case of height maximizebutton 525, the selected dimension is height. However, in thisillustrative example, the width of display window 501 remains fixed.

In general, a sizing button is a region in a display where a program mayaccept mouse inputs to trigger a change in a window size. The sizingbutton can be represented by either a primary symbol or a secondarysymbol. The primary symbol and the secondary symbol are suggestive ofthe function that the sizing button may trigger. For example, a fullyenlarged sizing symbol can be a primary symbol. The primary symbol mayappear as outward facing arrows, for example, as shown in heightmaximize button 525. The primary symbol may suggest a generally outwardgrowth. A secondary symbol may suggest an inward collapse by reversingthe direction of the arrows. The primary symbol suggests one function,whereas the secondary symbol suggests an opposing or complementaryfunction. For example, the function of outwardly growing two windowboundaries is a complementary function of inwardly collapsing windowboundaries.

FIG. 6 is a diagram of a display desktop in accordance with anillustrative embodiment. Display 692 can display desktop 600 using, forexample, graphics processor 210 of FIG. 2 in a data processing system.As shown, display window 601 is maximized along a height dimension.Upper window boundary 651 abuts upper display edge 604. Lower windowboundary 653 abuts anchored screen element edge 690.

FIG. 6 shows an alternate form of display window, as compared to display500 in FIG. 5. Upon receiving a resize command to maximize displaywindow 601 along a height dimension, the program converts a formersymbol on a button to a new symbol. In this illustrative example, thenew symbol is restore sizing symbol 625. Clicking on restore sizingsymbol 625 causes the opposite result of clicking height maximize button525 in FIG. 5. If a user clicks on restore sizing symbol 625, then thedata processing system will cause display window 601 to assume itsprevious size along the height dimension, as shown in FIG. 5. Widthmaximize sizing button 629 remains unchanged by a command to resize theheight dimension of display window 601. Similarly, the width of displaywindow 601 remains fixed.

FIG. 7 is a diagram of a display desktop in accordance with anillustrative embodiment. A data processing system can show displaydesktop 700 on a display using, for example, graphics processor 210 ofFIG. 2 of a data processing system. A program can cause display desktop700 to be displayed after receiving a resize command, for example, aresize width command. Display window 701 is maximized along a widthdimension. Right window boundary 702 abuts right display edge 705. Leftwindow boundary 703 abuts left display edge 707.

FIG. 7 shows an alternate form of display window, as compared to display500 in FIG. 5. Upon receiving a resize command to maximize displaywindow 701 along a width dimension, the program converts a former symbolon a button to a new symbol. In this illustrative example, the newsymbol is restore sizing symbol 729. Clicking on restore sizing symbol729 causes the opposite result of clicking on width maximize sizingbutton 629 in FIG. 6. If a user clicks on restore sizing symbol 729,then the data processing system will cause display window 701 to assumeits previous size along the width dimension, as shown in FIG. 5. Heightmaximize sizing button 725 remains unchanged by a command to resize thewidth dimension of display window 701. Similarly, the width of displaywindow 701 remains fixed.

FIG. 8 is a diagram of a display desktop having a height maximizeddisplay window 601, as in FIG. 6, illustrating movement of the siderails or boundaries 608, 610 of the display window 601. A repositioncommand is entered by the user and received by an application program orthe operating system. The reposition command causes the third (left) andfourth (right) boundaries 608, 610 of the display window 601 to movewhile maintaining the fixed distance between the third and fourthboundaries 608, 610 and maintaining the position of the first (upper)and second (lower) boundaries 651, 653 with respect to the first andsecond window limits 604, 690. In other words, the first and secondboundaries remain anchored. In a preferred embodiment, the repositioncommand includes positioning the mouse cursor 606 over the title bar ofthe display window 601 and performing a “click and drag” operation. Withthe display window height-maximized as shown, the invention only allowsthe third (left) and fourth (right) boundaries 608, 610 of the displaywindow 601 to move in the same direction by the same distance.Accordingly, the title bar of a height maximized display window may beclicked and dragged to accomplish a purely leftward or purely rightwardmovement of the display window in its present size. Still, the windowmay be resized by a click and drag operation on either the left rail 608or the right rail 610, or by clicking on any of the other resizing iconsin the title bar.

FIG. 9 is a diagram of a display desktop having a width maximizeddisplay window, as in FIG. 7, illustrating movement of the top andbottom rails or boundaries 708, 710 of the display window 701. Areposition command is entered by the user and received by an applicationprogram or the operating system. The reposition command causes the first(upper) and second (lower) boundaries 708, 710 of the display window 701to move while maintaining the fixed distance between the first andsecond boundaries 708, 710 and maintaining the position of the third(left) and fourth (right) boundaries 703, 702 with respect to the leftand right window limits 707, 705. In other words, the third and fourthboundaries remain anchored. In a preferred embodiment, the repositioncommand includes positioning the mouse cursor 606 over the title bar ofthe display window 701 and performing a “click and drag” operation. Withthe display window width maximized as shown, the invention only allowsthe first (upper) and second (lower) boundaries 708, 710 of the displaywindow 701 to move in the same direction by the same distance.Accordingly, the title bar of a height maximized display window may beclicked and dragged to accomplish a purely upward or purely downwardmovement of the display window in its present size. Still, the windowmay be resized by a click and drag operation on either the upper rail708 or the lower rail 710, or by clicking on any of the other resizingicons in the title bar.

It should be recognized that the function of resizing a window to beheight maximized or width maximized, or the function of repositioning aheight maximized window or a width maximized window, in accordance withthe invention, may optionally be enabled or disabled system wide byediting the user preferences within the operating system. In thismanner, the enhanced resizing and repositioning abilities of the presentinvention can be enabled or disabled as to all windows, or certainapplications. Furthermore, the resizing and repositioning functions ofthe present invention may be implemented in various graphical userinterfaces, such as desktop metaphor systems. While the invention hasbeen described and shown in the Figures in a two dimensional (2D)desktop configuration such as WINDOWS XP, the invention may also beimplemented in a three dimensional (3D) desktop configuration such asWINDOW FLIP 3D (WINDOWS XP and WINDOWS FLIP 3D are trademarks ofMicrosoft Corporation, Seattle, Wash.). Implementation in a 3D desktopallows an application window to be “swung back” along an edge to providea 3D look and take up less desktop space, yet the 3D window may still bemaximized along one or more edge. Even live thumbnails images of awindow (which may be invoked with an ALT+TAB command) or taskbarthumbnail images of a window (which may be invoked by rolling the mouseover a taskbar icon) may visually show whether the window has beenheight maximized or width maximized.

FIGS. 10A and 10B provide a flowchart of steps executed on a dataprocessing system in accordance with an illustrative embodiment. Thedata processing system may be, for example, data processing system 200of FIG. 2. The process shown in FIGS. 10A and 10B describes height andwidth maximizing a display window, as described with respect to FIG. 3through FIG. 7, as well as the movement of a height or width maximizeddisplay window, as described with respect to in FIGS. 8 and 9.

Initially, a user invokes a program. A program can be invoked when theuser clicks on an icon on a desktop. Such program invocations can alsooccur when a user enters a command on a command line. In addition, suchprogram invocations can also occur when a user executes a keystrokecombination. A program can be invoked using other input commands.However a program is invoked, the program operates according to itsprogramming until terminated.

Some functions of a program may rely upon the operating system toexecute such functions. Consequently, a step performed by a program mayinvolve further execution by the operating system. Similarly, anoperating system can receive user input and pass the user input to theprogram for further processing.

However, the program is invoked, the program receives a programinvocation (step 801). The program responds by retrieving options and astored size state (step 803). Options reflect possible new sizes of thedisplay window. A stored size state is a virtual object size associatedwith a display window or program prior to program invocation. The storedsize state retains a size along a dimension that a display window hadprior to extending the display window to a window display limit. Thestored size state may include boundary positions, for example, an upperboundary position, a lower boundary position, a left boundary position,and a right boundary position. Such boundary positions may be expressedin a number of pixels distant from a reference point on a display.

Next, the program moves and shows the display window according to theoptions and the stored size state (step 805). The program determineswhether the user is dragging the title bar (step 823). If so, then theprogram determines whether the display window is maximized in onedirection (step 825), i.e., height maximized or width maximized.Dragging a title bar of a display window that is maximized in onedirection, causes the program to allow movement of the display window inthe non-maximized direction, but not in the maximized direction (step827). In other words, the title bar of a height maximized display windowcould only drag the display window left or right and the title bar of awidth maximized display window could only drag the display window upwardor downward. By contrast, a title bar of a display window that is notmaximized in one direction can be dragged to allow movement of thedisplay window in all directions (step 829).

The program continues by determining whether the program has received aresize command. For example, the program determines whether the user hasclicked on a sizing button (step 807). If not, the program thendetermines if the program has received a program termination event (step821). A negative result to step 821 causes the program to re-executestep 807. However, if the program determines that the program hasreceived a program termination event at step 821, the processterminates.

Returning to step 807, if the user has clicked on a sizing button (a‘yes’ output to step 807), the program determines whether the displaywindow is fully enlarged along the dimension associated with the sizingbutton (step 809).

In any case, an affirmative result at step 809 prompts the program todetermine whether a stored size state exists (step 815). If no storedsize state is found (a ‘no’ output at step 815), the program returns tostep 807. An affirmative result at step 815 prompts the program to causethe display window to be reduced along the dimension to the stored sizestate (step 817). In addition, the program resets the sizing button todisplay a new resize symbol (step 819). For example, if the sizingbutton had previously shown arrows converging in the up and downdirections, the program may instead cause a symbol that includes arrowsdiverging in the up and down directions to be displayed. The programresumes by re-executing step 807.

Occasionally, a user may desire to maximize a display window along asingle dimension. Thus, a negative determination to step 809 prompts theprogram to store the dimension as a stored size state (step 831). Next,the program maximizes the display window along the dimension in thedesktop corresponding to the sizing button selected (step 833). However,the other dimension of the display window remains fixed. The program maymaximize the display window to the full extent of a display.Alternatively, the program may maximize the display window to the fullextent of the desktop, less any anchored screen elements such as ataskbar. Next, the program resets the sizing button to display a newresizing symbol (step 819). In this case, the display resize symbol iscomplementary to a formerly displayed resize symbol. The complementaryresize symbol to outward faced arrows is a symbol of inward facedarrows. Following step 819, the program resumes by re-executing step823.

The illustrative examples described herein have several advantages overthe known art of displaying display windows on a display of a dataprocessing system. For example, a user can readily enlarge a displaywindow fully along a single dimension. Similarly, a program may retainthe former window size in that dimension. The program may restore thedisplay window to the window size in response to receiving a furtherresize command. A further advantage of these functions is that a userhas easy access to information displays in display window unoccupiedpixels. Still further, when a display window is fully enlarged along asingle dimension, such as a height maximized or width maximized displaywindow, then the display window may be moved in the other non-maximizeddimension without altering the fully enlarged single dimension.

The invention can take the form of an entirely hardware embodiment, anentirely software embodiment or an embodiment containing both hardwareand software elements. In a preferred embodiment, the invention isimplemented in software, which includes but is not limited to firmware,resident software, microcode, etc.

Furthermore, the invention can take the form of a computer programproduct accessible from a computer-usable or computer-readable mediumproviding program code for use by or in connection with a computer orany instruction execution system. For the purposes of this description,a computer-usable or computer readable medium can be any tangibleapparatus that can contain, store, communicate, propagate, or transportthe program for use by or in connection with the instruction executionsystem, apparatus, or device.

The medium can be an electronic, magnetic, optical, electromagnetic,infrared, or semiconductor system (or apparatus or device) or apropagation medium. Examples of a computer-readable medium include asemiconductor or solid state memory, magnetic tape, a removable computerdiskette, a random access memory (RAM), a read-only memory (ROM), arigid magnetic disk and an optical disk. Current examples of opticaldisks include compact disk—read only memory (CD-ROM), compactdisk—read/write (CD-R/W) and DVD.

A data processing system suitable for storing and/or executing programcode will include at least one processor coupled directly or indirectlyto memory elements through a system bus. The memory elements can includelocal memory employed during actual execution of the program code, bulkstorage, and cache memories which provide temporary storage of at leastsome program code in order to reduce the number of times code must beretrieved from bulk storage during execution.

Input/output or I/O devices (including but not limited to keyboards,displays, pointing devices, etc.) can be coupled to the system eitherdirectly or through intervening I/O controllers.

Network adapters may also be coupled to the system to enable the dataprocessing system to become coupled to other data processing systems orremote printers or storage devices through intervening private or publicnetworks. Modems, cable modem and Ethernet cards are just a few of thecurrently available types of network adapters.

The description of the present invention has been presented for purposesof illustration and description, and is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the art. Theembodiment was chosen and described in order to best explain theprinciples of the invention, the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

1. A computer implemented method for adjusting a display window, thecomputer implemented method comprising: displaying the display window ona desktop, the display window having a first boundary, a second boundaryopposite the first boundary, a third boundary about perpendicular to thefirst boundary, and a fourth boundary opposite the third boundary;receiving a resize command to resize the display window; responsive toreceiving the resize command, moving the first boundary with respect toa first window limit and moving the second boundary with respect to asecond window limit, wherein the distance between the third boundary andthe fourth boundary remains fixed; receiving a reposition command toreposition the resized display window; and responsive to receiving thereposition command, moving the third and fourth boundaries of theresized display window while maintaining the fixed distance between thethird and fourth boundaries and maintaining the position of the firstand second boundaries with respect to the first and second windowlimits.
 2. The computer implemented method of claim 1, wherein thereposition command includes a click and drag operation in a title bar ofthe resized display window.
 3. The computer implemented method of claim1, further comprising: retrieving a stored size state associated withthe display window; reducing the distance between the first boundary andthe second boundary, in response to a determination that a stored sizestate is associated with the dimension; and resetting a sizing button todisplay a resize symbol.
 4. The computer implemented method of claim 1,wherein a distance between the first boundary and the second boundarycomprises one of a height of the display window, a distance betweenanchored screen elements, and a distance between a display boundary andan anchored screen element.
 5. The computer implemented method of claim1, wherein a distance between the first boundary and the second boundarycomprises one of a width of the display window, a distance betweenanchored screen elements, and a distance between a display boundary andan anchored screen element.
 6. The computer implemented method of claim1, wherein the step of receiving a resize command occurs in response toa user selecting a width maximize sizing button.
 7. The computerimplemented method of claim 1, wherein the step of receiving a resizecommand occurs in response to a user selecting a height maximize sizingbutton.
 8. A computer program product, comprising computer executableinstructions embodied in a computer usable medium, for adjusting adisplay window, the computer program product comprising: computer usableprogram code for displaying the display window on a desktop, the displaywindow having a first boundary, a second boundary opposite the firstboundary, a third boundary about perpendicular to the first boundary,and a fourth boundary opposite the third boundary; computer usableprogram code for receiving a resize command to resize the displaywindow; and computer usable program code for, responsive to receivingthe resize command, moving the first boundary with respect to a firstwindow limit and moving the second boundary with respect to a secondwindow limit, wherein the distance between the third boundary and thefourth boundary remains fixed. computer usable program code forreceiving a reposition command to reposition the resized display window;and computer usable program code for, responsive to receiving thereposition command, moving the third and fourth boundaries of theresized display window while maintaining the fixed distance between thethird and fourth boundaries and maintaining the position of the firstand second boundaries with respect to the first and second windowlimits.
 9. The computer program product of claim 8, wherein thereposition command includes a click and drag operation in a title bar ofthe resized display window.
 10. The computer program product of claim 8,further comprising: computer usable program code for retrieving a storedsize state associated with the display window; computer usable programcode for reducing the distance between the first boundary and the secondboundary, in response to a determination that a stored size state isassociated with the dimension; and computer usable program code forresetting a sizing button to display a resize symbol.
 11. The computerprogram product of claim 8, wherein a distance between the firstboundary and the second boundary comprises one of a height of thedisplay window, a distance between anchored screen elements, and adistance between a display boundary and an anchored screen element. 12.The computer program product of claim 8, wherein a distance between thefirst boundary and the second boundary comprises one of a width of thedisplay window, a distance between anchored screen elements, and adistance between a display boundary and an anchored screen element. 13.The computer program product of claim 8, wherein the computer usableprogram code for receiving a resize command is responsive to a userselecting a width maximize sizing button.
 14. The computer programproduct of claim 8, wherein the computer usable program code forreceiving a resize command occurs is responsive to a user selecting aheight maximize sizing button.
 15. A data processing system comprising:a processor; a bus connected to the processor; a computer usable mediumconnected to the bus, wherein the computer usable medium contains a setof instructions for adjusting a display window, wherein the processor isadapted to carry out the set of instructions to: display the displaywindow on a desktop, the display window having a first boundary, asecond boundary opposite the first boundary, a third boundary aboutperpendicular to the first boundary, and a fourth boundary opposite thethird boundary; receive a resize command to resize the display window;responsive to receiving the resize command, move the first boundary withrespect to a first window limit and move the second boundary withrespect to a second window limit, wherein the distance between the thirdboundary and the fourth boundary remains fixed; receive a repositioncommand to reposition the resized display window; and responsive toreceiving the reposition command, move the third and fourth boundariesof the resized display window while maintaining the fixed distancebetween the third and fourth boundaries and maintain the position of thefirst and second boundaries with respect to the first and second windowlimits.
 16. The data processing system of claim 15, wherein thereposition command includes a click and drag operation in a title bar ofthe resized display window.
 17. The data processing system of claim 15,wherein the processor is further adapted to carry out the set ofinstructions to: retrieve a stored size state associated with thedisplay window; reduce the distance between the first boundary and thesecond boundary, in response to a determination that a stored size stateis associated with the dimension; and reset a sizing button to display aresize symbol.
 18. The data processing system of claim 15, wherein adistance between the first boundary and the second boundary comprisesone of a height of the display window, a distance between anchoredscreen elements, and a distance between a display boundary and ananchored screen element.
 19. The data processing system of claim 15,wherein a distance between the first boundary and the second boundarycomprises one of a width of the display window, a distance betweenanchored screen elements, and a distance between a display boundary andan anchored screen element.
 20. The data processing system of claim 15,wherein receipt of the resize command is responsive to a user selectingone of a width maximize sizing button and a height maximize sizingbutton.